home *** CD-ROM | disk | FTP | other *** search
/ Whiteline: delta / whiteline CD Series - delta.iso / dl_serie / updates / 003 / everest / se_test / seproto.h < prev    next >
Text File  |  1995-11-25  |  10KB  |  262 lines

  1. /* SE-Protokoll zur Kommunikation zwischen Shells zur Programmentwicklung
  2.  * und Editoren.
  3.  *
  4.  * Dieses Protokoll dient dazu, unter Multitasking-Systemen die Shell
  5.  * zur Compilierung und ähnlichen Sachen zu veranlassen, und um Fehler-
  6.  * meldungen und/oder Fehlerdateien an den Editor zurückzugeben.
  7.  *
  8.  * Kommandos bzw. Nachrichten von der Shell zum Editor beginnen
  9.  * mit SE_, Nachrichten vom Editor zur Shell beginnen mit ES_
  10.  *
  11.  * Da teilweise Zeiger auf Speicherbereiche übergeben werden, ist vom
  12.  * jeweiligen Absender der Nachricht darauf zu achten, daß diese
  13.  * Speicherbereiche vom Empfänger auch lesbar sind (Memory Protection!).
  14.  * Dafür sind diese als Readable zu allozieren!
  15.  *
  16.  * Version  Datum       Änderungen
  17.  * =====================================================================
  18.  *   0.1    10.1.94     Erster Entwurf
  19.  *   0.2    17.1.94     SE_TERMINATE hinzugefügt
  20.  *   0.3    25.1.94     SE_CLOSE hinzugefügt.
  21.  *                      tErrInfo geändert, SE_ERROR geändert
  22.  *                      tShellCommands und tEditCommands korrigiert
  23.  */
  24.  
  25.  
  26. #define SE_INIT         0x4200
  27.     /* Die Shell fragt an, ob ein Editor das SE-Protokoll
  28.      * versteht.
  29.      * Wort 3: Ein Bitset, welche Nachrichten die Shell versendet
  30.      * Wort 4+5: Ein Bitset, welche Editorkommandos verstanden werden
  31.      * Wort 6: Unterstütze Versionsnummer des Protokolls
  32.      * Als Antwort erhält es ein ES_OK vom  Editor.
  33.      */
  34.  
  35. #define SE_OK           0x4201
  36.     /* Die Shell sagt dem Editor, das sie das Protokoll
  37.      * versteht.
  38.      * Wort 3: Ein Bitset, welche Nachrichten die Shell versendet
  39.      * Wort 4+5: Ein Bitset, welche Editorkommandos verstanden werden
  40.      * Wort 6: Unterstütze Versionsnummer des Protokolls
  41.      * Wort 7: Die ApId des Programmes, dessen Nachricht beantwortet wird
  42.      */
  43.  
  44. #define SE_ACK          0x4202
  45.     /* Die Shell bestätigt den Empfang eines Editorkommandos und gibt zurück,
  46.      * ob das Kommando ausgeführt wird.
  47.      * Wort 3: TRUE: Kommando wird verstanden und ausgeführt.
  48.      *         FALSE: Das Kommando wird nicht verstanden
  49.      * Eine SE_ACK mit TRUE sagt nichts darüber aus, ob das Kommando erfolg-
  50.      * reich ausgeführt wurde. Es sagt nur, daß die Shell das Kommando
  51.      * versteht und ausführen wird!
  52.      */
  53.  
  54. #define SE_OPEN         0x4203
  55.     /* Die Shell sagt dem Editor, daß er einen Text öffnen
  56.      * soll. Als Antwort erhält die Shell ein ES_ACK
  57.      * Wort 3+4: Ein Zeiger auf den Filenamen des zu öffnenden Files
  58.      */
  59.  
  60. #define SE_ERROR        0x4204
  61.     /* Es ist ein Fehler beim Compilieren aufgetreten.
  62.      * Wort 3+4: Ein Zeiger auf eine Infostruktur, die wie folgt
  63.      *           aufgebaut ist:
  64.      *              Wort 0+1: Ein Zeiger auf den Namen des compilierten Textes.
  65.      *              Wort 2+3: Ein Zeiger auf den Text der Fehlermeldung
  66.      *              Wort 4  : Die Fehlernummer
  67.      * Mit ES_ACK bestätigt der Editor die Meldung.
  68.      */
  69.  
  70. #define SE_ERRFILE      0x4205
  71.     /* Es sind Fehler aufgetreten. Die Fehlermeldungen stehen in einem
  72.      * Errorfile, welches in der Message spezifiziert wird.
  73.      * Wort 3+4: Ein Zeiger auf den Filenamen des Errorfiles mit den
  74.      *           Fehlermeldungen
  75.      * Wort 5+6: Ein Zeiger auf den Namen des compilierten Textes
  76.      * Mit ES_ACK bestätigt der Editor die Meldung.
  77.      */
  78.  
  79. #define SE_PROJECT      0x4206
  80.     /* Die Shell teilt dem Editor mit, daß das Projekt
  81.      * geändert wurde. Der Filename des aktuellen
  82.      * Projektfiles wird als Parameter übergeben
  83.      * Wort 3+4: Ein Zeiger auf den Namen des Projektfiles
  84.      * Der Editor bestätigt mit ES_ACK.
  85.      * Eine vernünftige Reaktion des Editors wäre es in dem Fall,
  86.      * ebenfalls das Projekt zu wechseln, sofern er diese unterstützt.
  87.      */
  88.  
  89. #define SE_QUIT         0x4207
  90.     /* Die Shell teilt dem Editor mit, daß sie jetzt beendet wird.
  91.      * Der Editor sollte in dem Fall die Shell als Kommunikationspartner
  92.      * vergessen.
  93.      * Parameter gibt es keine.
  94.      * Es wird keine Antwort erwartet!
  95.      */
  96.  
  97. #define SE_TERMINATE      0x4208
  98.     /* Die Shell teilt dem Editor mit, daß dieser sich beenden soll.
  99.      * Der Editor sollte in dem Fall sich selbst beenden und seinen ganz
  100.      * normalen Terminierungsprozeß durchlaufen (und in dem auch ein ES_QUIT
  101.      * schicken!). Der Grund für so eine Meldung der Shell könnte zum Beispiel
  102.      * zu wenig Speicher zum compilieren sein.
  103.      * Mit ES_ACK bestätigt der Editor die Meldung.
  104.      */
  105.  
  106. #define SE_CLOSE          0x4209
  107.     /* Die Shell teilt dem Editor mit, daß dieser alle Texte sichern soll.
  108.      * Der Editor sollte bei geänderten Texten vorher nachfragen.
  109.      * Mit ES_ACK bestätigt der Editor die Meldung.
  110.      */
  111.  
  112.  
  113. #define ES_INIT         0x4240
  114.     /* Ein Editor fragt an, ob eine Shell das SE-Protokoll versteht.
  115.      * Wort 3: Ein Bitset, welche Shellnachrichten verstanden werden
  116.      * Wort 4+5: Ein Bitset, welche Editorkommandos versendet werden
  117.      * Wort 6: Unterstütze Versionsnummer des Protokolls
  118.      * Als Antwort erhält es SE_OK von der Shell
  119.      */
  120.  
  121. #define ES_OK           0x4241
  122.     /* Der Editor beantwortet die Anfrage der Shell nach dem Protokoll.
  123.      * Wort 3: Ein Bitset, welche Shellnachrichten verstanden werden
  124.      * Wort 4+5: Ein Bitset, welche Editorkommandos versendet werden
  125.      * Wort 6: Unterstütze Versionsnummer des Protokolls
  126.      * Wort 7: Die ApId des Programmes, dessen Nachricht beantwortet wird
  127.      */
  128.  
  129. #define ES_ACK          0x4242
  130.     /* Der Editor bestätigt den Empfang des Kommandos
  131.      * Wort 3: TRUE: Kommando wird verstanden und ausgeführt.
  132.      *         FALSE: Das Kommando wird nicht verstanden
  133.      * Eine ES_ACK mit TRUE sagt nichts darüber aus, ob das Kommando erfolg-
  134.      * reich ausgeführt wurde. Es sagt nur, daß der Editor das Kommando
  135.      * versteht und ausführen wird!
  136.      */
  137.  
  138. #define ES_COMPILE      0x4243
  139.     /* Der Editor sagt der Shell, daß sie ein File übersetzen soll.
  140.      * Ein Pointer auf den Dateinamen wird in der Message übergeben.
  141.      * Wort 3+4: Zeiger auf den Namen der zu compilierenden Datei.
  142.      * Diese Nachricht muß mit SE_ACK bestätigt werden.
  143.      */
  144.  
  145. #define ES_MAKE         0x4244
  146.     /* Der Editor sagt der Shell, daß sie ein Make ausführen soll.
  147.      * Ein Filename kann in der Message übergeben werden, muß aber
  148.      * nicht gesetzt sein und muß von der Shell auch nicht beachtet
  149.      * werden!
  150.      * Wort 3+4: Zeiger auf den Namen des Makefiles (oder NULL)
  151.      * Die Shell bestätigt mit SE_ACK.
  152.      */
  153.  
  154. #define ES_MAKEALL      0x4245
  155.     /* Der Editor sagt der Shell, daß ein komplettes Make All ausgeführt
  156.      * werden soll. Ein Filename für das Makefile kann (muß nicht) in
  157.      * der Message übergeben werden.
  158.      * Wort 3+4: Zeiger auf den Namen des Makefiles (oder NULL)
  159.      * Die Shell bestätigt mit SE_ACK.
  160.      */
  161.  
  162. #define ES_LINK         0x4246
  163.     /* Der Editor sagt der Shell, daß das Programm
  164.      * gelinkt werden soll. Ein Filename kann
  165.      * in der Message übergeben werden, muß aber
  166.      * nicht unbedingt beachtet werden von der Shell!
  167.      * Wort 3+4: Zeiger auf den Namen der Source, die gelinkt werden soll
  168.      *           (oder NULL)
  169.      * Die Shell bestätigt mit SE_ACK.
  170.      */
  171.  
  172. #define ES_EXEC         0x4247
  173.     /* Der Editor sagt der Shell, daß das Programm
  174.      * zu der Source ausgeführt werden soll. Ein
  175.      * Filename kann übergeben werden, muß von der
  176.      * Shell aber nicht beachtet werden.
  177.      * Wort 3+4: Zeiger auf den Namen des auszuführenden Files (oder NULL)
  178.      *           Bei einer Sourcedatei ist diese ggf. noch zu
  179.      *           compilieren und/oder zu linken
  180.      * Die Shell bestätigt mit SE_ACK.
  181.      */
  182.  
  183. #define ES_MAKEEXEC     0x4248
  184.     /* Die Shell soll ein Make ausführen und danach das Programm ausführen.
  185.      * Ein Filename für das Makefile kann (muß nicht) in der Message
  186.      * übergeben werden.
  187.      * Wort 3+4: Zeiger auf den Namen des Makefiles (oder NULL)
  188.      * Die Shell bestätigt mit SE_ACK.
  189.      */
  190.  
  191. #define ES_PROJECT      0x4249
  192.     /* Der Editor teilt der Shell mit, daß das Project
  193.      * geändert/gewechselt wurde. Der Filename des
  194.      * Projektfiles wird als Parameter in der Message
  195.      * übergeben.
  196.      * Wort 3+4: Zeiger auf den Namen des Projektfiles
  197.      * Die Shell bestätigt mit SE_ACK.
  198.      * Eine vernünftige Reaktion der Shell wäre in dem Fall, ebenfalls
  199.      * das Projekt zu wechseln, sofern es diese unterstützt.
  200.      */
  201.  
  202. #define ES_QUIT         0x424A
  203.     /* Der Editor teilt der Shell mit, daß er jetzt beendet wird.
  204.      * Die Shell sollte in dem Fall den Editor als Kommunikationspartner
  205.      * vergessen.
  206.      * Parameter gibt es keine.
  207.      * Es wird keine Antwort erwartet!
  208.      */
  209.  
  210. #define SEPROTOVERSION 0x100  /* Die Versionsnummer des Protokolls.
  211.                                * Highbyte ist die Major Number
  212.                                * Lowbyte ist die Lower Number
  213.                                */
  214.  
  215. /* Typdefinitionen für die Nachrichten
  216.  */
  217.  
  218. /* Dies definiert die einzelnen Bits, welche Nachrichten unterstützt werden
  219.  */
  220.  
  221. /* Shell-Kommandos
  222.  */
  223. #define _SEINIT      0x0001
  224. #define _SEOK        0x0002
  225. #define _SEACK       0x0004
  226. #define _SEOPEN      0x0008
  227. #define _SEERROR     0x0010
  228. #define _SEERRFILE   0x0020
  229. #define _SEPROJECT   0x0040
  230. #define _SEQUIT      0x0080
  231. #define _SETERMINATE 0x0100
  232. #define _SECLOSE     0x0200
  233.  
  234. /* Editor-Kommandos
  235.  */
  236. #define _ESINIT      0x0001
  237. #define _ESOK        0x0002
  238. #define _ESACK       0x0004
  239. #define _ESCOMPILE   0x0008
  240. #define _ESMAKE      0x0010
  241. #define _ESMAKEALL   0x0020
  242. #define _ESLINK      0x0040
  243. #define _ESEXEC      0x0080
  244. #define _ESMAKEEXEC  0x0100
  245. #define _ESPROJECT   0x0200
  246. #define _ESQUIT      0x0400
  247.  
  248.  
  249. typedef struct
  250. {
  251.  char *errFile;         /* Zeiger auf den Namen der compilierten Datei
  252.                          */
  253.  char *errMess;         /* Zeiger auf die Fehlermeldung
  254.                          */
  255.  int errNum;            /* Die Fehlernummer
  256.                          */
  257.  long errLine;          /* Die fehlerhafte Zeile
  258.                          */
  259.  int errRow;            /* Die Spalte mit dem Fehler (oder 0)
  260.                          */
  261. } ERRINFO;
  262.